//State.cpp
#include "State.h" 
#include "Context.h" 
#include <iostream> 
using namespace std;

State::State() {}
State::~State() {}
void State::OperationInterface (Context* con) 
{ 
	cout<<"State::.."<<endl;
}

bool State::ChangeState(Context* con,State* st) 
{ 
	con->ChangeState(st);
	return true; 
}

void State::OperationChangeState(Context* con) {}

ConcreteStateA::ConcreteStateA() {}
ConcreteStateA::~ConcreteStateA() {}
void ConcreteStateA::OperationInterface (Context* con) 
{ 
	cout<<"ConcreteStateA::OperationInterface ......"<<endl; 
}

void ConcreteStateA::OperationChangeState(Context* con) 
{
	OperationInterface(con);
	this->ChangeState(con,new ConcreteStateB()); 
}

ConcreteStateB::ConcreteStateB() {}
ConcreteStateB::~ConcreteStateB() {}
void ConcreteStateB::OperationInterface (Context* con) 
{ 
	cout<<"ConcreteStateB::OperationInterface......"<<endl; 
}
void ConcreteStateB::OperationChangeState (Context* con) 
{ 
	OperationInterface(con);
	this->ChangeState(con,new ConcreteStateA()); 
}
